% How I do my computing
% Leah Rowe
% 2019-04-28

*Important notice: In this article, I wholeheartedly recommend Debian several
times. This is, by default, a completely free (as in freedom) distribution of
GNU+Linux. HOWEVER, be warned that it is not endorsed by the Free Software
Foundation or GNU project. You see, Debian has an optional repository
containing non-free software. If you install Debian, make sure not to enable
the non-free repository and then you will have an entirely free system installed
onto your computer. I use Debian instead of Trisquel because it is technically
superior. It really is that simple. And I know what I'm doing, so I know how
to avoid common freedom pitfalls. I've used GNU+Linux for 15 years and Debian is my
home country as far as distros go, so I will never ever switch to anything else.*

This is partly inspired by Richard Stallman's
[page](https://stallman.org/stallman-computing.html) and again
inspired by a friend's inspiration of the same page. Said friend made their
own page inspired from Stallman's page, and i'm making this one inspired from
[my friend's page](https://www.calebdias.com/weblog/how-i-do-my-computing.html) :)

Over the years, people have asked me what I use for my computing setup. I will
now elaborate on this.

My overarching philosophy is one of minimalism and *freedom*. I strongly believe
in [Free Software](https://www.gnu.org/philosophy/free-sw.html). I have greatly
admired Richard Stallman and his ilk since I was very young (basically as soon
as I started using computers regularly, when I first heard about GNU+Linux).

I support the right to self-determination and freedom of thought. I am a
libertarian socialist, with leanings towards state communism.

My politics extends to my computing. As a communist, I strongly believe that
people should, themselves, have direct control and sovereignty over their own
affairs and that they should work collectively to build a better world run
*by the people, for the people*. Free Software fits perfectly within this
paradigm. I have always felt this to be the case.

I do not believe in private property. I think that all resources should be
open and accessible to the public, without any oppressor (aka proprietor).
[Proprietary software](http://www.gnu.org/philosophy/proprietary.html) is a
scourge that must be wiped from the face of the earth!

I am also a minimalist by nature. I lead a very simple life. I do not own a car.
I live in a small house, with a good friend of mine. I don't like to buy things,
instead I like to *make things* (I have my own lab!). I am a vegan (I temporarily
sinned and went back to meat, as stated in a previous article, but I am now
100% vegan again). I want my impact on the world to not be negative in anyway.
When I die, I went to leave a legacy of lasting contributions. I strongly believe
that the way most people live today, and the way that they are told to live, is
destroying the world. For instance, capitalism is the main cause of climate
change on our planet.

<h2>My computers</h2>

I have several computers:

- Desktop is my main computer
- Laptop is my secondary computer, when I'm away somewhere
- Server for ns1.libreboot.org and ns2.libreboot.org, also routing
- Server for minifree.org (web only)
- Server for libreboot.org (+mail), vimuser.org, transit.org.uk
  and (mail only) minifree.org
- CH431A mini-programmer. This can flash SPI chips and EEPROMs. I use it to
  flash libreboot/coreboot images onto chips. I previously used a Raspberry Pi,
  but the RPi requires a non-free GPU blob to boot up the main CPU. Also, the
  CH431A does a much better job at actually flashing the chips, since it's
  dedicated and optimized for this exact purpose. It's convenient for flashing
  chips in DIP-8 form fact. For SOP/SOIC chips it has headers on the board, and
  it comes with an additional daughter board where you can place such a chip
  on top of and it converts that pinout to a DIP-8 pinout (it's a little adapter
  board for SOIC8/16 chips so that you can flash them using the normal DIP-8
  socket on the CH431A)

<h3>Desktop</h3>

The desktop is running [Libreboot](https://libreboot.org/) and
[Debian GNU+Linux](https://www.debian.org/). It has an Intel Core 2 Duo E8400
with 2GB RAM, a Gigabyte GA-G41M-ES2L mainboard, 400W Corsair PSU (Corsair make
good PSUs), 2 Western Digital Red (4TB) HDDs in RAID1 (encrypted) and, for
audio, I use a DragonFly Red USB DAC with a pair of AKG K702 headphones (this
is necessary for me, because I'm an audiophile. I am extremely sensitive to
sound, it's one of the perks of my autism, and I **love** listening to music,
especially the hi fidelity music in e.g. FLAC format. I am a very sound-oriented
person. I can 'see' sound).

I have my own lab, with an AOYUE 2703A+ soldering station in it. It has solder,
de-solder, hot air and a smoke absorber. It's very nifty. I've had it for years,
though I've only recently (as of April 2019) started using it regularly.

I really dislike modern desktop environments and software. They use so much
memory. I use all-lightweight software on my system, which is why I only need
2GB RAM. Software is as follows:

- LXQt desktop environment
- GNU IceCat web browser. I was previously using Midori and Netsurf, but
  GNU IceCat is lightweight in practise because it doesn't enable JavaScript
  by default (it uses GNU LibreJS). While this does slow down loading of some
  web pages, I find it to be a nice solution.
  *DISCLAIMER: I have Javascript whitelisted on certain websites. E.g. bank, UPS,
  etc*. (however, I tend not to use Javascript anywhere else). I *could* send
  out packages at the post office (and have my employee do that too) but the
  correct solution would be to write replacement javascript for those few sites
  that are needed. I need bank/UPS basically for my business, otherwise I can't
  make shipments or purchase stock.
- Tor web browser bundle - I use Tor only for sensitive things. I otherwise
  use an ISP that respects privacy, and I use a VPN, so I don't feel the need
  to use Tor for absolutely everything. I have the safety settings on "max",
  which means that javascript, cookies etc are disabled.
- Vim for editing text
- Sylpheed for email
- mpv for audio/video playback
- smtube (with mpv+youtubedl method) for streaming from youtube
- youtube-dl for downloading from YouTube
- simple-scan for scanning documents (printer+scanner is an HP DeskJet 3050A. It's
  surprisingly very reliable. I've had it for many years and it has never failed
  me, and it works with the libre hp-lip driver)
- transmission bittorrent client (I watch a *lot* of anime)
- abiword and gnumeric (instead of libreoffice)
- for PDF, I use qpdfview. it's a lightweight PDF reader

I used to have MATE+firefox+thunderbird and they *ate* RAM. I had 8GB of RAM
and they'd still kill my system. Since switching to *better software*, I now
only need 2GB of RAM, so I only installed 2GB when switching to this machine.

<h3>Programming languages</h3>

Mostly just C and BASH. I have experience with assembly programming but I haven't
felt the need to use it in years. I once wrote a compiler and a virtual machine,
many years ago when I was a highschool student (in the UK, it's called college
not highschool, where university and college mean different things. I do not
have a university education, I taught myself all the skills that I have).

I use the GNU C compiler and related tools. I refuse to use LLVM, since it's
not copylefted and GCC does a good job anyway.

In the past, I have used Python and PHP. I have never used Perl. A million years
ago, I briefly used C# (with Mono, **not** Visual Studio).

Besides programming, I also know a few non-programming languages like Markdown
etc, and I have knowledge of HTML/CSS (though, these days I don't use HTML or
CSS at all. My sites are generated via a static site generator that converts
Markdown, though the vimuser.org homepage is written in HTML).

I don't do as much programming these days. My focus has shifted to hardware. I
am currently working on a variety of my own personal projects in my lab. Most
of them are just me messing around, nothing professional.

I don't feel the need to learn any more programming languages. I do not know
how to write in JavaScript, and I have no interest in learning it because, honestly?
I hate the web. I'd rather avoid using the web if at all possible. I find the
modern WWW annoying, in that it focuses on design instead of content. Style
without substance. When I use the web, it's to conduct business or to learn
new information (mostly via text that I read). I occasionally work with images
and video.

The modern WWW is insane, in my opinion.

<h3>Laptop</h3>

The laptop also runs Debian and Libreboot. It's a ThinkPad X200 that I've modded
so that it is all-free-software.

Same setup as the desktop.

<h3>Router</h3>

The router is a librebooted X200 thinkpad with Debian on it. It just creates
a very basic routing setup, which makes public IPv4 and IPv6 addresses available
as supplied by my ISP. I have 13 static IPv4 addresses and several billion IPv6
addresses, so I don't have NAT on my network.

The router also has bind9 on it, for providing DNS. I need this for my servers.
I'm lazy so it serves as both master and slave DNS.

<h3>Servers</h3>

I believe strongly in self sufficiency. As such, I do not outsource any of my
server hosting.

I have a server which hosts most of my websits, and also provides mail services
to libreboot.org and minifree.org. Minifree.org's own website is a separate
server.

All servers run Libreboot and Debian (they are X200 thinkpads). For http I use
nginx web server. For mail I use postfix.

I strongly believe that the best hosting provider for me is *myself*. For you,
the best hosting provider is *yourself*. The internet was (is) intended to be
a fully decentralized network, where people can share things in a peer to peer
fashion. I strongly oppose the current efforts around the world to centralize
the web.

As such, the only social media account that I have is twitter, which I use for
sharing my art. Having said that, I rarely post anything to it. I otherwise
host all services myself.

For HTTPS I use the LetsEncrypt CA.

Caveat:
I don't have much bandwidth, so bandwidth-intensive resources like videos are
hosted on an external server. It's a VPS that I rent out from a hosting company,
and I've installed a basic nginx+letsencrypt setup on it.

<h2>Mobile phone</h2>

I don't have one :)

I grew up without mobile phones (hell, I grew up *without internet*. I first
got online in my teen years). I know the dewey decimal system used in libraries.
I can memorize a phone number. I maintain eye contact when talking to you. Even
when I used a mobile phone for a brief few years, I never used it the way most
people do; I only used it in emergencies, or basically my mother / roommate would
call me. or a supplier would text me, etc (business partner). Well, all I need
is email.

Here is my history of mobile phone usage:

- Up until age 12: No mobile phone at all
- 12-16 had a Nokia 3210 brick. I used it to play *Snake*, mostly. I didn't use
  it for phone calls. I also used it as an alarm clock.
- 16-20 had a slightly less-bricky Nokia phone. It had *Snake II*
- 20-24: **No mobile phone**
- 24-27: Mother nagged me into getting a phone so she could text me. I moved out
  of home when I was 24.
- 27+: No mobile phone again :)

During the last few years I used an Android phone. I barely knew how to use
Android (I still don't). Well, I mainly used it just for phone calls, but like,
I didn't even use basic features like the address book most of the time. I just
remembered numbers in my head. I'm good at remembering things. I just look at a
photograph in my head, which I shot when I first read the number. It's always
there and it never fades.

Honestly, mobile phones are pointless

As of 8 May 2019 I am without a mobile phone. And honestly? I don't care, since
I barely used my phone anyway... you can always email me. Or idk, if you know me
you could knock on my door and come in for a cup of tea? Not that I personally
drink tea. I could also serve coffee, or water.

Now I am untraceable again, for the most part. You cannot reach me unless I want
you to reach me. This is exactly how I like it. I hate talking on the phone.

<h2>Games consoles and miscellaneous non-general-purpose computers</h2>

Connected to my desktop is a very decent LCD monitor with 1920x1080 display
resolution. It has decent colour/contrast and 1ms response time... the kind of
monitor that gamers use. Well, I'm a gamer :)
Although I'm a hardcore free software activist (I'm the founder of the
Libreboot project. I have
[a drawing](https://blog.vimuser.org/rms.html) of Richard Stallman which I
made, and I've put it on my fridge), I *wasn't always like this*. I used to
play a lot of videogames on PlayStation as a kid, and for purely nostalgic
reasons I decided to buy a PS1 and PS2. The PS2 has a Matrix Infinity modchip
in it. I've installed a PIC 12C508A modchip with MM3/stealth in the PS1. In
the PS1 (a SCPH-7502 model) I've also soldered a headphone jack for connecting
my speakers to it. The jack is connected directly to the analog output from
the PS1's own DAC, instead of going through the multi-out (the multi-out is
connected to an amp. I've bypassed the amp and I use my own amp, for audio).
I have the Open Source Scan Converter (OSSC) and the PS1 connects to it
via RGB SCART, the PS2 to it via Component RGB, and then that connects to my
monitor via HDMI. This is why I wanted a decent monitor (<1ms response time).
I modded both consoles myself.

I make an exception for games. My position on games is this:

- Ideally, the engine must be free software (but I don't mind non-free games)
- The game must not run on a *general purpose* computer (I will never use
  Windows). I don't have a problem with dedicated games consoles, since
  these are not intended to be general purpose computers.
- Games are just mindless fun. They serve no functional purpose. I also play
  libre games, and I like to write games too :)
- HOWEVER, the game engines can be used for more things than just games, such
  as construction planning, design, etc. It can also be used in medical
  applications (e.g. particle simulator for research on protein folding).
- I **oppose DRM**. I refuse to own a games console with DRM. I will only use it
  if it has a *jailbreak* (e.g. modchip to bypass copy protections, or hacked
  firmware etc). All of the games systems that I own are modified to remove all
  DRM and copy protection, which means that *I* have the freedom to run *my own*
  code on them should I choose to do so. GNU has quite decent support for MIPS
  in GCC, which can be used for writing games on the Playstation 1. There are
  also decent dev kits (free software friendly) for PS 1 and 2, not necessarily
  from the GNU project but from others.
- I generally prefer older consoles, since the games on these systems run on
  *bare metal* (PS1 and PS2 have an OS, but it doesn't do anything except
  load interrupt services that games can make use of, but the games have
  direct execution on bare metal). I think bare metal is the most fun way to do
  games programming. I don't like working behind bars :) Though, for non-game
  programming an OS like GNU+Linux is generally better.
